{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "![](https://raw.githubusercontent.com/Qinbf/tf-model-zoo/master/README_IMG/01.jpg)\n",
    "AI MOOC： **www.ai-xlab.com**  \n",
    "如果你也是AI爱好者，可以添加我的微信一起交流：**sdxxqbf**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8b926668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 载入数据\n",
    "data = np.genfromtxt(\"data.csv\", delimiter=\",\")\n",
    "x_data = data[:,0]\n",
    "y_data = data[:,1]\n",
    "plt.scatter(x_data,y_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 学习率learning rate\n",
    "lr = 0.0001\n",
    "# 截距\n",
    "b = 0 \n",
    "# 斜率\n",
    "k = 0 \n",
    "# 最大迭代次数\n",
    "epochs = 50\n",
    "\n",
    "# 最小二乘法\n",
    "def compute_error(b, k, x_data, y_data):\n",
    "    totalError = 0\n",
    "    for i in range(0, len(x_data)):\n",
    "        totalError += (y_data[i] - (k * x_data[i] + b)) ** 2\n",
    "    return totalError / float(len(x_data)) / 2.0\n",
    "\n",
    "def gradient_descent_runner(x_data, y_data, b, k, lr, epochs):\n",
    "    # 计算总数据量\n",
    "    m = float(len(x_data))\n",
    "    # 循环epochs次\n",
    "    for i in range(epochs):\n",
    "        b_grad = 0\n",
    "        k_grad = 0\n",
    "        # 计算梯度的总和再求平均\n",
    "        for j in range(0, len(x_data)):\n",
    "            b_grad += (1/m) * (((k * x_data[j]) + b) - y_data[j])\n",
    "            k_grad += (1/m) * x_data[j] * (((k * x_data[j]) + b) - y_data[j])\n",
    "        # 更新b和k\n",
    "        b = b - (lr * b_grad)\n",
    "        k = k - (lr * k_grad)\n",
    "        # 每迭代5次，输出一次图像\n",
    "        if i % 5==0:\n",
    "            print(\"epochs:\",i)\n",
    "            plt.plot(x_data, y_data, 'b.')\n",
    "            plt.plot(x_data, k*x_data + b, 'r')\n",
    "            plt.show()\n",
    "    return b, k"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Starting b = 0, k = 0, error = 2782.5539172416056\n",
      "Running...\n",
      "epochs: 0\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8d9c24e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 5\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nfyTGj3vGqmHcAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8da555f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 10\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n/wMl6mOJxkDjewAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8da793c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 15\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n/x8bn/LUUYZB1AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8dac8208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 20\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8db04240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 25\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8eb12fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 30\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8eb4a0b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 35\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8eb86f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 40\n"
     ]
    },
    {
     "data": {
      "image/png": "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\np6AXEam4/w/7kmGyy93R8AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8ebbc6a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epochs: 45\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20b8ebf7e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "After 50 iterations b = 0.030569950649287983, k = 1.4788903781318357, error = 56.32488184238028\n"
     ]
    }
   ],
   "source": [
    "print(\"Starting b = {0}, k = {1}, error = {2}\".format(b, k, compute_error(b, k, x_data, y_data)))\n",
    "print(\"Running...\")\n",
    "b, k = gradient_descent_runner(x_data, y_data, b, k, lr, epochs)\n",
    "print(\"After {0} iterations b = {1}, k = {2}, error = {3}\".format(epochs, b, k, compute_error(b, k, x_data, y_data)))\n",
    "\n",
    "# 画图\n",
    "# plt.plot(x_data, y_data, 'b.')\n",
    "# plt.plot(x_data, k*x_data + b, 'r')\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "x0, x1 = np.meshgrid([1,2,3], [4,5,6])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [1, 2, 3],\n",
       "       [1, 2, 3]])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4, 4, 4],\n",
       "       [5, 5, 5],\n",
       "       [6, 6, 6]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "(1,4) (2,4) (3,4)\n",
    "(1,5) (2,5) (3,5)\n",
    "(1,6) (2,6) (3,6)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
